package com.fiap.seguranca.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;
import javax.persistence.TypedQuery;

import com.fiap.jpautil.JpaUtil;
import com.fiap.seguranca.bean.Usuario;

public class UsuarioDaoImpl implements UsuarioDao {
	
	private final GenericDao<Usuario> dao;
	EntityManager em = new JpaUtil().getEntityManager();
	
	public UsuarioDaoImpl(){
		dao = new GenericDao<Usuario>(em, Usuario.class);
	}

	@Override
	public Usuario inserir(Usuario usuario) {

		return dao.salvar(usuario);	
	}
	
	public Long buscarIdPeloLogin(String parametro){		

		Query query = em.createQuery("select e.id_usuario from tb_usuario e where e.login =: login");
		query.setParameter("login", parametro);
		
		return  (Long) query.getSingleResult(); 

	}
	
	public Usuario buscar(long id){		
		return dao.buscar(id);	
	}
	
	public Usuario promover(Usuario usuario){
		return dao.update(usuario);
	}
	
	public List lista(){
		return dao.lista();
	}
	
	public List<Usuario> buscarFuncionarios(){		

		TypedQuery<Usuario> query = em.createQuery("from tb_usuario l where l.funcao = 'funcionario'", Usuario.class);
		
		return query.getResultList(); 
	}

	
}
